home *** CD-ROM | disk | FTP | other *** search
/ Aminet 21 / Aminet 21 (1997)(GTI - Schatztruhe)[!][Oct 1997].iso / Aminet / dev / src / sPK_Bump.lha / 2dBump.s next >
Encoding:
Text File  |  1980-01-03  |  14.2 KB  |  514 lines

  1. *************************************************************************
  2. *        2dbumpmapping by SCENile^sPANK! in 1996            *
  3. *            Released 14/08/97                *
  4. *        C2P by ? (can't remember..)                *
  5. *                                    *
  6. *        If u use diz one in a demo, greet sPANK!        *
  7. *                                    *
  8. *        Not very systemfriendly or anything...            *
  9. *                                    *
  10. *        Anyway, the lightsource is 256*256 bytes,         *
  11. *            the bumpmap 320x200 bytes!            *
  12. *                                    *
  13. *        If u don't have the includes, get them! :)        *
  14. *************************************************************************
  15. *        Mail me for comments, sourceswapping, etc at:        *
  16. *            scenile@hotmail.com !                *
  17. **************************************************************************
  18.         section main,code
  19. **************************************************************************
  20.         incdir    'include:'
  21.         include    'exec/exec_lib.i'
  22.         include 'hardware/CustomRegisters.i'
  23.         include    'graphics/graphics_lib.i'
  24. **************************************************************************
  25. _AbsExecBase    EQU    4
  26. MEMF_CHIP    EQU     1<<1
  27. MEMF_FAST    EQU     1<<0
  28. MEMF_CLEAR    EQU     1<<16
  29. LOFlist        EQU     $32
  30. planesize    EQU    40*256
  31. planes        EQU    8
  32. XSIZE        EQU    320
  33. YSIZE        EQU    200
  34. chunkyplanesize    EQU    XSIZE*YSIZE
  35. bmapsize    EQU    XSIZE*YSIZE
  36. **************************************************************************
  37.         bsr    getmem
  38. **************************************************************************
  39.         move.w    #$0020,dmacon+_custom    ;Sprite DMA off
  40.  
  41.         move.l    _AbsExecBase,a6        ;
  42.         jsr    _LVOForbid(a6)        ;Stäng av multitaskingen..
  43.  
  44.         lea.l    graphics_name,a1    ;Get GFX libbet
  45.         moveq    #0,d0            ;
  46.         jsr    _LVOOpenLibrary(a6)    ;
  47.         move.l    d0,_GfxBase        ;
  48. **************************************************************************
  49.         bsr    initcopscreen
  50.         bsr    fixlsource        ;Adjust brightness
  51.  
  52.         bsr    calcnormals        ;Duh !
  53. **************************************************************************
  54. mainloop:    bsr    dobump
  55.  
  56.         move.l    chunky,a0
  57.         move.l    screen,a1
  58.         bsr    c2p
  59.  
  60.         btst    #6,$bfe001
  61.         bne.w    mainloop
  62. **************************************************************************
  63. endnormally:    bsr    uninitcopscreen
  64.  
  65.         move.l    _AbsExecBase,a6        ;
  66.         move.l    _GfxBase,a1        ;
  67.         jsr    _LVOCloseLibrary(a6)    ;
  68.         jsr    _LVOPermit(a6)        ;Sätt på multitaskingen..
  69.  
  70.         bsr    freemem
  71. exit:        moveq    #0,d0
  72.         rts
  73. **************************************************************************
  74. fixlsource:    lea.l    lightsrc,a0
  75.         move.w    #256*256-1,d0
  76. .fixloop:    move.b    (a0),d1
  77.         lsl.b    #1,d1
  78.         move.b    d1,(a0)+
  79.         dbf    d0,.fixloop
  80.         rts
  81. *************************************************************************
  82. * Bump on man!                                *
  83. *************************************************************************
  84. dobump:        move.l    chunky,a0        ;Screen to plot on
  85.         move.l    normals,a1        ;Bump offsets
  86.         lea.l    lightsrc,a2
  87. *************************************************************************
  88.         moveq    #0,d1        ;För att använda longwords i lightsrc
  89.         move.w    joy0dat+_custom,d2    ;Läs mus..
  90. *************************************************************************
  91.         move.w    #((XSIZE*YSIZE)/5)-1,d0
  92.  
  93. .bumploop:    move.w    (a1)+,d1        ;NormalX
  94.         add.w    d2,d1
  95.         move.b    (a2,d1.l),(a0)+        ;Plotta
  96.         move.w    (a1)+,d1        ;NormalX
  97.         add.w    d2,d1
  98.         move.b    (a2,d1.l),(a0)+        ;Plotta
  99.         move.w    (a1)+,d1        ;NormalX
  100.         add.w    d2,d1
  101.         move.b    (a2,d1.l),(a0)+        ;Plotta
  102.         move.w    (a1)+,d1        ;NormalX
  103.         add.w    d2,d1
  104.         move.b    (a2,d1.l),(a0)+        ;Plotta
  105.         move.w    (a1)+,d1        ;NormalX
  106.         add.w    d2,d1
  107.         move.b    (a2,d1.l),(a0)+        ;Plotta
  108.  
  109.         dbf    d0,.bumploop    ;Xloop
  110. *************************************************************************
  111.         rts
  112. *************************************************************************
  113. * Räkna ut normalerna för bmappen                    *
  114. *************************************************************************
  115. calcnormals:    lea.l    bmap,a0
  116.         move.l    normals,a1
  117.  
  118.         move.w    #YSIZE-1,d1
  119. .calcyloop:    move.w    #XSIZE-1,d0
  120. .calcxloop:    move.b    XSIZE-1(a0),d2        ;Optimerat som fan ...
  121.         sub.b    (a0)+,d2        ;
  122.         move.b    XSIZE(a0),d3        ;
  123.         sub.b    -1(a0),d3        ;
  124.  
  125.         add.w    d1,d2            ;addar x värdet
  126.         lsl.w    #8,d2            ;Korrekt plotoffset i bumploop
  127.  
  128.         add.w    d0,d2            ;addar y värdet
  129.         add.w    d3,d2
  130.         move.w    d2,(a1)+        ;Både y o x normaler i tabben
  131.  
  132.         dbf    d0,.calcxloop        ;xloop
  133.         dbf    d1,.calcyloop        ;yloop
  134.         rts
  135. **************************************************************************
  136. initcopscreen:    lea.l    b_planes,a0
  137.         move.l  screen,d0
  138.         moveq    #planes-1,d1
  139.  
  140. init_cop:    move.w    d0,6(a0)        ;install bit plane pointers
  141.         swap    d0
  142.         move.w    d0,2(a0)
  143.         swap    d0
  144.         add.l    #chunkyplanesize/8,d0
  145.         add.w    #8,a0
  146.         dbf    d1,init_cop
  147.  
  148.         move.l    _GfxBase,a6
  149.         move.w    #$80,dmacon+_custom    ;copper DMA off
  150.         move.l    LOFlist(a6),old_cop    ;save existing copper list
  151.         move.l    #copperlist,LOFlist(a6)    ;install new list
  152.         move.w    #$8080,dmacon+_custom    ;copper dma on
  153.  
  154.         rts
  155. *************************************************************************
  156. uninitcopscreen:move.l    _GfxBase,a6
  157.         move.w    #$80,dmacon+_custom    ;copper dma off
  158.         move.w  #$81a0,dmacon+_custom    ;Sätt på sprite dma M.M.
  159.         move.l    old_cop,LOFlist(a6)    ;Install old list
  160.         move.w    #$8080,dmacon+_custom    ;copper dma on
  161.         move.w    #32,beamcon0+_custom    ;Switcha till PAL!
  162.         rts
  163. *************************************************************************
  164. getmem:        move.l    _AbsExecBase,a6        ;FreeMem()
  165.         move.l    #planesize*planes,d0    ;AllocMem()
  166.         move.l    #MEMF_CHIP+MEMF_CLEAR,d1;
  167.         jsr    _LVOAllocMem(a6)    ;
  168.         move.l    d0,screen        ;
  169.  
  170.         move.l    #chunkyplanesize,d0    ;AllocMem()
  171.         move.l    #MEMF_FAST+MEMF_CLEAR,d1;
  172.         jsr    _LVOAllocMem(a6)    ;
  173.         move.l    d0,chunky        ;
  174.  
  175.         move.l    #bmapsize*2,d0        ;Holds both X and Y normals
  176.         move.l    #MEMF_FAST+MEMF_CLEAR,d1;
  177.         jsr    _LVOAllocMem(a6)    ;
  178.         move.l    d0,normals        ;
  179.  
  180.         rts
  181. ***************************************************************************
  182. freemem:    move.l    _AbsExecBase,a6        ;FreeMem()
  183.         move.l    screen,a1        ;
  184.         move.l    #planesize*planes,d0    ;
  185.         jsr    _LVOFreeMem(a6)        ;
  186.  
  187.         move.l    chunky,a1        ;
  188.         move.l    #chunkyplanesize,d0    ;
  189.         jsr    _LVOFreeMem(a6)        ;
  190.  
  191.         move.l    normals,a1        ;
  192.         move.l    #bmapsize*2,d0        ;Holds both X and Y normals
  193.         jsr    _LVOFreeMem(a6)        ;
  194.  
  195.         rts
  196. ***************************************************************************
  197. WIDTH        EQU    320        ; MUST be multiple of 32
  198. HEIGHT        EQU    200
  199. plsiz        EQU    (WIDTH/8)*HEIGHT
  200.  
  201.         cnop    0,4
  202. c2p:        movem.l    d2-d7/a2-a6,-(sp)
  203.         move.l    a0,a2
  204.         add.l    #plsiz*8,a2    ;a2 = end of chunky buffer
  205.     
  206.         ;; Sweep thru the whole chunky data once,
  207.         ;; Performing 3 merge operations on it.
  208.     
  209.         move.l    #$00ff00ff,a3    ; load byte merge mask
  210.         move.l    #$0f0f0f0f,a4    ; load nibble merge mask
  211.  
  212. firstsweep:    movem.l (a0),d0-d7      ;8+4n   40      cycles
  213.         move.l  d4,a6           a6 = CD
  214.         move.w  d0,d4           d4 = CB
  215.         swap    d4              d4 = BC
  216.         move.w  d4,d0           d0 = AC
  217.         move.w  a6,d4           d4 = BD
  218.         move.l  d5,a6           a6 = CD
  219.         move.w  d1,d5           d5 = CB
  220.         swap    d5              d5 = BC
  221.         move.w  d5,d1           d1 = AC
  222.         move.w  a6,d5           d5 = BD
  223.         move.l  d6,a6           a6 = CD
  224.         move.w  d2,d6           d6 = CB
  225.         swap    d6              d6 = BC
  226.         move.w  d6,d2           d2 = AC
  227.         move.w  a6,d6           d6 = BD
  228.         move.l  d7,a6           a6 = CD
  229.         move.w  d3,d7           d7 = CB
  230.         swap    d7              d7 = BC
  231.         move.w  d7,d3           d3 = AC
  232.         move.w  a6,d7           d7 = BD
  233.         move.l  d7,a6
  234.         move.l  d6,a5
  235.         move.l  a3,d6   ; d6 = 0x0x
  236.         move.l  a3,d7   ; d7 = 0x0x
  237.         and.l   d0,d6   ; d6 = 0b0r
  238.         and.l   d2,d7   ; d7 = 0j0z
  239.         eor.l   d6,d0   ; d0 = a0q0
  240.         eor.l   d7,d2   ; d2 = i0y0
  241.         lsl.l   #8,d6   ; d6 = b0r0
  242.         lsr.l   #8,d2   ; d2 = 0i0y
  243.         or.l    d2,d0           ; d0 = aiqy
  244.         or.l    d7,d6           ; d2 = bjrz
  245.         move.l  a3,d7   ; d7 = 0x0x
  246.         move.l  a3,d2   ; d2 = 0x0x
  247.         and.l   d1,d7   ; d7 = 0b0r
  248.         and.l   d3,d2   ; d2 = 0j0z
  249.         eor.l   d7,d1   ; d1 = a0q0
  250.         eor.l   d2,d3   ; d3 = i0y0
  251.         lsl.l   #8,d7   ; d7 = b0r0
  252.         lsr.l   #8,d3   ; d3 = 0i0y
  253.         or.l    d3,d1           ; d1 = aiqy
  254.         or.l    d2,d7           ; d3 = bjrz
  255.  
  256.         move.l  a4,d2   ; d2 = 0x0x
  257.         move.l  a4,d3   ; d3 = 0x0x
  258.         and.l   d0,d2   ; d2 = 0b0r
  259.         and.l   d1,d3   ; d3 = 0j0z
  260.         eor.l   d2,d0   ; d0 = a0q0
  261.         eor.l   d3,d1   ; d1 = i0y0
  262.         lsr.l   #4,d1   ; d1 = 0i0y
  263.         or.l    d1,d0           ; d0 = aiqy
  264.         move.l  d0,(a0)+
  265.         lsl.l    #4,d2
  266.         or.l    d3,d2           ; d1 = bjrz
  267.         move.l    d2,(a0)+
  268.  
  269.         move.l  a4,d3   ; d3 = 0x0x
  270.         move.l  a4,d1   ; d1 = 0x0x
  271.         and.l   d6,d3   ; d3 = 0b0r
  272.         and.l   d7,d1   ; d1 = 0j0z
  273.         eor.l   d3,d6   ; d6 = a0q0
  274.         eor.l   d1,d7   ; d7 = i0y0
  275.         lsr.l   #4,d7   ; d7 = 0i0y
  276.         or.l    d7,d6           ; d6 = aiqy
  277.         move.l    d6,(a0)+
  278.         lsl.l    #4,d3
  279.         or.l    d1,d3           ; d7 = bjrz
  280.         move.l    d3,(a0)+
  281.  
  282.         move.l  a6,d7
  283.         move.l  a5,d6
  284.         move.l  a3,d0   ; d0 = 0x0x
  285.         move.l  a3,d1   ; d1 = 0x0x
  286.         and.l   d4,d0   ; d0 = 0b0r
  287.         and.l   d6,d1   ; d1 = 0j0z
  288.         eor.l   d0,d4   ; d4 = a0q0
  289.         eor.l   d1,d6   ; d6 = i0y0
  290.         lsl.l   #8,d0   ; d0 = b0r0
  291.         lsr.l   #8,d6   ; d6 = 0i0y
  292.         or.l    d6,d4           ; d4 = aiqy
  293.         or.l    d1,d0           ; d6 = bjrz
  294.         move.l  a3,d1   ; d1 = 0x0x
  295.         move.l  a3,d6   ; d6 = 0x0x
  296.         and.l   d5,d1   ; d1 = 0b0r
  297.         and.l   d7,d6   ; d6 = 0j0z
  298.         eor.l   d1,d5   ; d5 = a0q0
  299.         eor.l   d6,d7   ; d7 = i0y0
  300.         lsl.l   #8,d1   ; d1 = b0r0
  301.         lsr.l   #8,d7   ; d7 = 0i0y
  302.         or.l    d7,d5           ; d5 = aiqy
  303.         or.l    d6,d1           ; d7 = bjrz
  304.         move.l  a4,d6   ; d6 = 0x0x
  305.         move.l  a4,d7   ; d7 = 0x0x
  306.         and.l   d4,d6   ; d6 = 0b0r
  307.         and.l   d5,d7   ; d7 = 0j0z
  308.         eor.l   d6,d4   ; d4 = a0q0
  309.         eor.l   d7,d5   ; d5 = i0y0
  310.         lsr.l   #4,d5   ; d5 = 0i0y
  311.         or.l    d5,d4           ; d4 = aiqy
  312.         move.l  d4,(a0)+
  313.         lsl.l   #4,d6   ; d6 = b0r0
  314.         or.l    d7,d6           ; d5 = bjrz
  315.         move.l  d6,(a0)+
  316.  
  317.         move.l  a4,d7   ; d7 = 0x0x
  318.         move.l  a4,d5   ; d5 = 0x0x
  319.         and.l   d0,d7   ; d7 = 0b0r
  320.         and.l   d1,d5   ; d5 = 0j0z
  321.         eor.l   d7,d0   ; d0 = a0q0
  322.         eor.l   d5,d1   ; d1 = i0y0
  323.         lsr.l   #4,d1   ; d1 = 0i0y
  324.         or.l    d1,d0           ; d0 = aiqy
  325.         move.l  d0,(a0)+
  326.         lsl.l   #4,d7   ; d7 = b0r0
  327.         or.l    d5,d7           ; d1 = bjrz
  328.         move.l  d7,(a0)+
  329.         cmp.l   a0,a2           ;; 4c
  330.         bne.w   firstsweep      ;; 6c
  331.  
  332.         sub.l   #plsiz*8,a0
  333.         move.l  #$33333333,a5
  334.         move.l  #$55555555,a6
  335.         lea     plsiz*4(a1),a1  ;a2 = plane4
  336.  
  337. secondsweep:    move.l  (a0),d0
  338.         move.l  8(a0),d1
  339.         move.l  16(a0),d2
  340.         move.l  24(a0),d3
  341.  
  342.         move.l  a5,d6   ; d6 = 0x0x
  343.         move.l  a5,d7   ; d7 = 0x0x
  344.         and.l   d0,d6   ; d6 = 0b0r
  345.         and.l   d2,d7   ; d7 = 0j0z
  346.         eor.l   d6,d0   ; d0 = a0q0
  347.         eor.l   d7,d2   ; d2 = i0y0
  348.         lsl.l   #2,d6   ; d6 = b0r0
  349.         lsr.l   #2,d2   ; d2 = 0i0y
  350.         or.l    d2,d0           ; d0 = aiqy
  351.         or.l    d7,d6           ; d2 = bjrz
  352.         move.l  a5,d7   ; d7 = 0x0x
  353.         move.l  a5,d2   ; d2 = 0x0x
  354.         and.l   d1,d7   ; d7 = 0b0r
  355.         and.l   d3,d2   ; d2 = 0j0z
  356.         eor.l   d7,d1   ; d1 = a0q0
  357.         eor.l   d2,d3   ; d3 = i0y0
  358.         lsl.l   #2,d7   ; d7 = b0r0
  359.         lsr.l   #2,d3   ; d3 = 0i0y
  360.         or.l    d3,d1           ; d1 = aiqy
  361.         or.l    d2,d7           ; d3 = bjrz
  362.         move.l  a6,d2   ; d2 = 0x0x
  363.         move.l  a6,d3   ; d3 = 0x0x
  364.         and.l   d0,d2   ; d2 = 0b0r
  365.         and.l   d1,d3   ; d3 = 0j0z
  366.         eor.l   d2,d0   ; d0 = a0q0
  367.         eor.l   d3,d1   ; d1 = i0y0
  368.         lsr.l   #1,d1   ; d1 = 0i0y
  369.         or.l    d1,d0           ; d0 = aiqy
  370.         move.l  d0,plsiz*3(a1)
  371.         add.l   d2,d2
  372.         or.l    d3,d2           ; d1 = bjrz
  373.         move.l  d2,plsiz*2(a1)
  374.  
  375.         move.l  a6,d3   ; d3 = 0x0x
  376.         move.l  a6,d1   ; d1 = 0x0x
  377.         and.l   d6,d3   ; d3 = 0b0r
  378.         and.l   d7,d1   ; d1 = 0j0z
  379.         eor.l   d3,d6   ; d6 = a0q0
  380.         eor.l   d1,d7   ; d7 = i0y0
  381.         lsr.l   #1,d7   ; d7 = 0i0y
  382.         or.l    d7,d6           ; d6 = aiqy
  383.         move.l  d6,plsiz*1(a1)
  384.         add.l   d3,d3
  385.         or.l    d1,d3           ; d7 = bjrz
  386.         move.l  d3,(a1)+
  387.  
  388.         move.l  4(a0),d0
  389.         move.l  12(a0),d1
  390.         move.l  20(a0),d2
  391.         move.l  28(a0),d3
  392.  
  393.         move.l  a5,d6   ; d6 = 0x0x
  394.         move.l  a5,d7   ; d7 = 0x0x
  395.         and.l   d0,d6   ; d6 = 0b0r
  396.         and.l   d2,d7   ; d7 = 0j0z
  397.         eor.l   d6,d0   ; d0 = a0q0
  398.         eor.l   d7,d2   ; d2 = i0y0
  399.         lsl.l   #2,d6   ; d6 = b0r0
  400.         lsr.l   #2,d2   ; d2 = 0i0y
  401.         or.l    d2,d0           ; d0 = aiqy
  402.         or.l    d7,d6           ; d2 = bjrz
  403.         move.l  a5,d7   ; d7 = 0x0x
  404.         move.l  a5,d2   ; d2 = 0x0x
  405.         and.l   d1,d7   ; d7 = 0b0r
  406.         and.l   d3,d2   ; d2 = 0j0z
  407.         eor.l   d7,d1   ; d1 = a0q0
  408.         eor.l   d2,d3   ; d3 = i0y0
  409.         lsl.l   #2,d7   ; d7 = b0r0
  410.         lsr.l   #2,d3   ; d3 = 0i0y
  411.         or.l    d3,d1           ; d1 = aiqy
  412.         or.l    d2,d7           ; d3 = bjrz
  413.         move.l  a6,d2   ; d2 = 0x0x
  414.         move.l  a6,d3   ; d3 = 0x0x
  415.         and.l   d0,d2   ; d2 = 0b0r
  416.         and.l   d1,d3   ; d3 = 0j0z
  417.         eor.l   d2,d0   ; d0 = a0q0
  418.         eor.l   d3,d1   ; d1 = i0y0
  419.         lsr.l   #1,d1   ; d1 = 0i0y
  420.         or.l    d1,d0           ; d0 = aiqy
  421.         move.l  d0,-4-plsiz*1(a1)
  422.         add.l   d2,d2
  423.         or.l    d3,d2           ; d1 = bjrz
  424.         move.l  d2,-4-plsiz*2(a1)
  425.  
  426.         move.l  a6,d3   ; d3 = 0x0x
  427.         move.l  a6,d1   ; d1 = 0x0x
  428.         and.l   d6,d3   ; d3 = 0b0r
  429.         and.l   d7,d1   ; d1 = 0j0z
  430.         eor.l   d3,d6   ; d6 = a0q0
  431.         eor.l   d1,d7   ; d7 = i0y0
  432.         lsr.l   #1,d7   ; d7 = 0i0y
  433.         or.l    d7,d6           ; d6 = aiqy
  434.         move.l  d6,-4-plsiz*3(a1)
  435.         add.l   d3,d3
  436.         or.l    d1,d3           ; d7 = bjrz
  437.         move.l  d3,-4-plsiz*4(a1)
  438.         add.w   #32,a0  ;;4c
  439.         cmp.l   a0,a2   ;;4c
  440.         bne.w   secondsweep     ;;6c
  441.  
  442.         ;300
  443.  
  444. .exit:        movem.l    (sp)+,d2-d7/a2-a6
  445.         rts
  446. **************************************************************************
  447.         section    copdata,data_c        ;Must be in chip
  448.  
  449. copperlist:    dc.w    bplcon0,%0000000000010000    ;8 bitplanes
  450.         dc.w    diwstrt,11393
  451.         dc.w    diwstop,11519
  452.         dc.w    ddfstrt,56
  453.         dc.w    ddfstop,208
  454.         dc.w    bpl1mod,0
  455.         dc.w    bpl2mod,0
  456.  
  457.         dc.w    $1dc,$0            ;Ställer om till ntsc
  458.         dc.w    $f201,$ff00        ;För fullskärm..
  459.         dc.w    bplcon0,%0000000000000001
  460.  
  461. pal1:        incbin    'coding:asm/koder/bump/bin/pal3.cop'
  462.  
  463. b_planes:    dc.w    bpl1pth            ;bitplane 1
  464. p1h:        dc.w    0
  465.         dc.w    bpl1ptl
  466. p1l:        dc.w    0
  467.         dc.w    bpl2pth            ;bitplane 2
  468. p2h:        dc.w    0
  469.         dc.w    bpl2ptl
  470. p2l:        dc.w    0
  471.         dc.w    bpl3pth            ;bitplane 3
  472. p3h:        dc.w    0
  473.         dc.w    bpl3ptl
  474. p3l:        dc.w    0
  475.         dc.w    bpl4pth            ;bitplane 4
  476. p4h:        dc.w    0
  477.         dc.w    bpl4ptl
  478. p4l:        dc.w    0
  479.         dc.w    bpl5pth            ;bitplane 5
  480. p5h:        dc.w    0
  481.         dc.w    bpl5ptl
  482. p5l:        dc.w    0
  483.         dc.w    bpl6pth            ;bitplane 6
  484. p6h:        dc.w    0
  485.         dc.w    bpl6ptl
  486. p6l:        dc.w    0
  487.         dc.w    bpl7pth            ;bitplane 7
  488. p7h:        dc.w    0
  489.         dc.w    bpl7ptl
  490. p7l:        dc.w    0
  491.         dc.w    bpl8pth            ;bitplane 8
  492. p8h:        dc.w    0
  493.         dc.w    bpl8ptl
  494. p8l:        dc.w    0
  495.  
  496.         dc.w     $ffff,$fffe        ;End of CList
  497. **************************************************************************
  498.         section    arrays,bss_c
  499. _GfxBase:     ds.l    1
  500. old_cop:    ds.l    1
  501. screen:        ds.l    1
  502. **************************************************************************
  503.         section    other_arrays,bss
  504. chunky        ds.l    1
  505. normals:    ds.l    1
  506. **************************************************************************
  507.         section    datavars,data
  508.  
  509. graphics_name:    dc.b    'graphics.library',0
  510.  
  511. bmap:        incbin    'bumpmap.raw'
  512. lightsrc:    incbin    'lightsource.raw'
  513. **************************************************************************
  514.